Most computer systems utilize a "volatile" memory which stores instructions and data for use by one or more processors. A typical volatile memory is a dynamic random access memory (DRAM) in which individual data bits are stored in a semiconductor capacitor. The capacitor is charged for a "one" and left uncharged for a "zero." The DRAM is volatile because the stored charge decays fairly rapidly. To maintain the integrity of such data, it must be periodically renewed or "refreshed". This is accomplished by reading the data before it completely decays and rewriting the data by recharging any capacitor storing a "one." DRAM is typically refreshed 500 times each second.
A characteristic of computer systems is that there is frequently competing demands for access to the memory. For example, each processor in the system may need to read or write data to the memory. In addition, the memory must be periodically accessed to be refreshed. A characteristic of memory is that it can not be accessed simultaneously. Thus, some mechanism must be provided to regulate access when simultaneous accesses are demanded.
Many computer systems have a memory controller to provide such regulation. One of the controller's duties is to arbitrate among competing requests for memory access. Because a system cannot tolerate data loss, refresh requests are usually given a fairly high priority thereby allowing prompt access. At least one known system even provides a lockout feature by which other requests for memory access are blocked until the refresh request is granted.
A disadvantage of known systems is that many requests for read and write operations from system processor(s) are delayed so that refreshing can take place. Such delays make a computer system less efficient.